(function(){

	$.fn.ConstructForm = function(){

		var calc = $(this);
		var question = calc.find('.info-block');
		var history = calc.find('.history');
		var construct = {
			
			updPop : function(obj){
				var cont = $(".info-block");
				//console.log(obj);
				if(obj.type != undefined) { 
					// добавить класс для чекбоксов
					cont.addClass("checked"); 
				} else {
					cont.removeClass("checked"); 
				}
				cont.html("<h2>" + obj.name + "</h2>");
				$.each(obj.answers, function(index, item){
					cont.append("<li class='answer' rel='" + obj.id + "' ><a rel='" + index + "' href='#'><span>" + item.name + "</span></a></li>");		
					cont.append("<input type='hidden' name='answer" + obj.id + "[" + index + "]'>");
				});

			},
			updHist : function(id_q, id_a){
				var cont = $(".history ul");
				var name = construct.struct[id_q].name;
				var answer = construct.struct[id_q].answers[id_a].name;
				var v = cont.find("a[rel=" + id_q + "]");
				if (v.length != 0) {
					v.parent().parent().find("p.ans").html(answer);
				} else {
					cont.append('<li><p class="ans">' + answer + '</p><p class="edit hidden"><a rel="' + id_q + '" href="#">изменить</a></p></li>');
				}
			},
			init : function(){
				construct.updPop(construct.struct[0]);
			},
			showFinish : function(){
				var cont = $(".info-block");
				cont.append("<input type='submit' value='отправить'></input>");
			},

			struct : {
				0 : {
					id : 0,
					name : "Тип бассейна",
					answers : {
						0 : {
							name : "Каркасный"
						},
						1 : {
							name : "Бетонный"
						},
						2 : {
							name : "Композитный"
						},
						3: {
							name : "Полипропиленовый"
						}
					}
				},
				1 : {
					id : 1,
					name : "Форма бассейна",
					answers : {
						0 : {
							name : "Круглый"
						},
						1 : {
							name : "Прямоугольный"
						},
						2 : {
							name : "Уникальный дизайн"
						}
					}
				},
				2 : {
					id : 2,
					name : "Расположение",
					answers : {
						0 : {
							name : "В доме",
						},
						1 : {
							name : "На улице"
						}
					}
				},
				3 : {
					id : 3,
					name : "Облицовка бассейна",
					answers : {
						0 : {
							name : "Пленка ПВХ"
						},
						1 : {
							name : "Плитка"
						},
						2 : {
							name : "Мозаика"
						}
					}
				},
				4 : {
					id : 4,
					name : "Закладные элементы",
					answers : {
						0 : {
							name : "Нержавеющая сталь"
						},
						1 : {
							name : "Пластик"
						},
						2 : {
							name : "Бронза"
						}
					}
				},
				5 : {
					id : 5,
					name : "Тип забора воды",
					answers : {
						0 : {
							name : "Скиммер"
						},
						1 : {
							name : "Лоток перелива "
						}
					}
				},
				6 : {
					id : 6,
					name : "Водоподготовка",
					answers : {
						0 : {
							name : "Авт. станция на основе хлора"
						},
						1 : {
							name : "Авт. станция на основе кислорода"
						},
						2 : {
							name : "Ручное дозирование"
						}
					}
				},
				7 : {
					id : 7,
					name : "Система нагрева воды",
					answers : {
						0 : {
							name : "Теплообменник"
						},
						1 : {
							name : "Электрический нагреватель"
						},
						2 : {
							name : "Без нагрева"
						}
					}
				},
				8 : {
					id : 8,
					name : "Подводное освещение",
					answers : {
						0 : {
							name : "Светильники галогеновые"
						},
						1 : {
							name : "Светодиодные прожекторы"
						},
						2 : {
							name : "Без освещения"
						}
					}
				},
				9 : {
					id : 9,
					type : "checked",
					name : "Дополнительно",
					answers : {
						0 : {
							name : "Обработка ультрафиолетом"
						},
						1 : {
							name : "Генератор озона"
						},
						2 : {
							name : "Гидромассаж"
						},
						3 : {
							name : "Аэромассаж"
						},
						4 : {
							name : "Противоток"
						},
						5 : {
							name : "Водопад"
						},
						6 : {
							name : "Гейзер"
						}
					}
				}
			}
		};

		//binds

		$(document).on("click", "#calculator .history ul li a", function(e){
			construct.updPop(construct.struct[parseInt($(this).attr("rel"), 10)]);
			e.preventDefault();
		});

		$(document).on("click", "#calculator .info-block li.answer", function(e){
			var a = $(this).find("a");
			construct.updHist($(this).attr("rel"), $(a).attr("rel"));
			if(construct.struct[parseInt($(this).attr("rel"), 10)+1] != undefined){
				construct.updPop(construct.struct[parseInt($(this).attr("rel"), 10)+1]);
				if (construct.struct[parseInt($(this).attr("rel"), 10)+2] == undefined){
					construct.showFinish();
				}	
			}
			e.preventDefault();
		});

		$(document).on("click", "#calculator .info-block.checked li.answer", function(e){
			e.preventDefault();
			var a = $(this).find("a");
			var span = a.find("span");
			if (span.hasClass("bg_check")) {
				span.removeClass("bg_check");
			} else {
				span.addClass("bg_check");
			}
		});

		construct.init();
	}

})();
